package org.dromara.business.service;

import org.dromara.business.domain.BusinessConfig;
import org.dromara.business.domain.vo.BusinessConfigVo;
import org.dromara.business.domain.bo.BusinessConfigBo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 业务参数配置Service接口
 *
 * @author zlj
 * @date 2024-05-19
 */
public interface BusinessConfigService extends IService<BusinessConfig> {

    /**
     * 查询业务参数配置
     */
    BusinessConfigVo queryById(Long businessConfigId);

    /**
     * 查询业务参数配置列表
     */
    TableDataInfo<BusinessConfigVo> queryPageList(BusinessConfigBo bo, PageQuery pageQuery);

    /**
     * 查询业务参数配置列表
     */
    List<BusinessConfigVo> queryList(BusinessConfigBo bo);

    /**
     * 新增业务参数配置
     */
    Boolean insertByBo(BusinessConfigBo bo);

    /**
     * 修改业务参数配置
     */
    Boolean updateByBo(BusinessConfigBo bo);

    /**
     * 校验并批量删除业务参数配置信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 校验并批量删除业务参数配置信息
     */
    Boolean deleteWithValidByKeys(List<String> keys);

    /**
     * 根据key获取业务参数配置详细信息
     *
     * @param configKey key
     */
    List<BusinessConfigVo> queryByKey(String configKey);

    /**
     * 根据key获取业务参数配置value
     *
     * @param configKey key
     */
    String queryValueByKey(String configKey);

    /**
     * 根据key获取单个业务参数配置详细信息
     *
     * @param configKey key
     */
    BusinessConfigVo queryOneByKey(String configKey);

    /**
     * 将经纬度解析为地址
     *
     * @param location gcj02坐标
     * @return 地址
     */
    String getAddress(String location);

    boolean updateStatus(Long businessConfigId);
}
